ROM NOTES for the HM-68, a Homebrew 6802 Computer

"Hassler's Monster," with a nod to Mary Shelley.

Constructed by Dave Hassler, October 2023

Based (mainly) on a 6800 design by Tetsuya Suzuki.
(Creative Commons 3.0)
[see schematics for more credits]

The 16K ROMs start at $C000.
The computer's design allows for one of two seperate banks to be
selected (manually). Both banks use lightly modified versions of 
SWTBUG as a monitor and both banks boot to SWTBUG (at $E000).
The banks contain:

BANK 0:
TSC Debugger
TSC Micro BASIC Plus
Tom Pittman's Tiny BASIC
SWTBUG 1.0

BANK 1:
MITS Altair 680 BASIC (via Mike Holley/Mike Douglas*)
SWTBUG 1.0
($E500 to $FFF7 free; 6.75 KB)

INSTRUCTIONS

For both banks, SWTBUG was modified to have the 'Z' command
point to a loader routine, not $C000, where a PROM resided
(or could) in the SWTPC 6800 machine. To raise the menu
while using Bank 0, enter 'Z' at the '$' prompt and then choose
which program you'd like to use. After it loads into RAM from
ROM, type 'G' to start it. Bank 1 only has MITS Altair 680 BASIC
in it, so typing 'Z' loads the BASIC, returns to SWTBUG, and
typing a 'G' will start BASIC.

As the Monster-68 has no RAM at $A000, the monitor's scratchpad
RAM was moved to $7F00. So, you can save a user SWI vector at
$7F12, the address of a program to 'go' to at $7F48, and the
stack starts at $7F42.  In other words, the LSByte is the same
as if the scratchpad was $A000 in an actual SWTPC 6800.

BANK 0 NOTES

Tiny BASIC resides from $0100 to $0912, and user RAM starts at
$0A00 and runs to $3FFF, about 13.5 KB, which should be more than
enough user space for Tiny.  Warm start at $0103.

TSC Micro BASIC Plus, by Bob Uiterwyk, sits from $0100 to $0D54,
with user RAM running from $0D55 to $5EFF (20.7 KB user RAM).
The 'EXTERNAL' command is set to $5F00.  Warm start at $0103.
The loader pre-loads the random number seed location.  The load
and save functions work as in the documentation on the HM-68.

TSC Debugger is an awesome program, and does just about anything
you'd need to do to develop assembly language programs, ala 1976.
It starts at $4100, cold or warm, and goes until $5FFF.

BANK 1 NOTES

I did not include VTL-2 in the ROM because it loads in about
9 seconds via serial terminal (delays of 5 msec for characters, 
30 msec for lines).  The S19 file will load at $1C00 and go until
$1FC5.  User RAM is from $0108 to $1BFF (about 6.9 KB).  *Set the
'&' variable to 264 upon cold start, or VTL-2 will crash.*  You
can lower the top of user RAM by resetting the '*' variable.

In response to the 'MEMORY SIZE?' question when Altair BASIC 1.1
first runs, if you enter 'A' you will see the name of the
author of this version, Ric Weiland. He ported the 8080
version for MITS as a contractor, and was also Micro-Soft employee
no. 2. This is the only "easter egg" in this version, written in
late 1975 (well-before the 6502 "!TFOSORCIM" shenanigans).

After that, enter '22822' to the 'MEMORY SIZE?' question to give
yourself exactly 16K of user RAM -- assuming you answer 'Y' to the
'SIN-COS-TAN-ATN' question.  16K ought to be enough for almost
anything you'd want to run; although, you can enter '32222' to the
'MEMORY SIZE?' question to make use of almost all the RAM, giving
about 25.8 KB for user programs.  This will protect the scratchpad
RAM from being overwritten by BASIC, which it will if left
"unchecked."  Entering 32222 allows 288 bytes (starting at $7DE0)
for ML programs. To allow a 1 KB space for ML subroutines, tables,
etc. starting at $7B00, enter '31488'. Want more space? Just enter
a smaller number (e.g., '22822').  Finally, be aware that MITS
Altair BASIC 1.1 requires that space is set aside for string
variables; use the CLEAR command to do so, as its 50-byte default
is often not enough.

* Mike D's website:
https://deramp.com/swtpc.com/Altair/Altair_Basic.htm
